
/**
 * 
 * 
 * @author (censhi) 
 * @version (a version number or a date)
 */
package libutil;
import java.io.*;
import java.nio.charset.*;
/**
 * classe permettant la contrustion d'un reader et son utilisation
 * @author censhi
 * @version 1.0
 */
public class fileloader{
    /**
     * variable Buffered reader pour l'implementation du Buffered reader et son utilisation ulterieur
     */
    public BufferedReader reader;
    /**
     * constructeur de la classe
     * @param chemin chemin d'acces au fichier 
     */
    public fileloader(String chemin){
        try
        {
            reader = new BufferedReader(new FileReader(chemin));
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
            System.out.println("An exception occurs "+ex.getMessage());
        }
    }
    /**
     * constructeur de la classe
     * @param chemin chemin d'acces au fichier 
     * @param charset le charset utilisé
     * @throws MalformedInputException 
     * @throws FileNotFoundException 
     */
    public fileloader(String chemin, String charset) throws MalformedInputException, FileNotFoundException{
    	CharsetDecoder decoder= Charset.forName(charset).newDecoder();
    	decoder.onMalformedInput(CodingErrorAction.REPORT);
    	decoder.onUnmappableCharacter(CodingErrorAction.REPORT);
    	InputStream stream;
		try {
			stream = new FileInputStream(chemin);
			this.reader = new BufferedReader(new InputStreamReader(stream, decoder));
			this.reader.readLine();
			//this.reader.close();
			//this.reader = new BufferedReader(new InputStreamReader(stream, decoder));
		} catch (FileNotFoundException e) {
			throw e;
		} catch (MalformedInputException mex){
			throw mex; 
		} catch (Exception ex){
			ex.printStackTrace();
		}
    }
    
    /**
     * methode retournant la ligne courante du fichier
     * @return la ligne courante sous forme de String 
     */
    public String readline(){
        String line = null;
        try
        {
            line = reader.readLine();
        }
        catch(Exception ex)
        {
             return null;
        }
        return line;
    }

	public void close() throws IOException {
		try {
			this.reader.close();
		} catch (IOException e) {
			throw e;
		}
		
	}
   
}
